C#入门到精通
C# 文档
入门
简介
类型
程序构建基块
主要语言区域
教程
选择你的第一课
基于浏览器的教程
Hello world
C# 中的数字
分支和循环
列表集合
在本地环境中工作
设置你的环境
C# 中的数字
分支和循环
列表集合
基础
程序结构
概述
Main 方法
顶级语句
类型系统
概述
命名空间
类
记录
接口
泛型
匿名类型
面向对象的编程
概述
对象
继承
多形性
功能技术
模式匹配
弃元
析构元组和其他类型
异常和错误
概述
使用异常
异常处理
创建和引发异常
编译器生成的异常
编码样式
标识符名称
C# 编码约定
教程
如何显示命令行参数
类简介
面向对象的 C#
C# 和 .NET 中的继承
转换类型
使用模式匹配生成数据驱动的算法
如何使用 try-catch 处理异常
如何使用 finally 执行清理代码
C# 中的新增功能
C# 10.0 (预览版 7 )
C# 9.0
C# 8.0
C# 7.0-7.3
编译器的重大更改
C# 版本历史记录
与 .NET 库的关系
版本兼容性
教程
浏览记录类型
探索顶级语句
探索对象中的模式
使用默认接口方法安全地更新接口
用默认接口方法创建 mixin 功能
探索索引和范围
使用可为空引用类型
生成和使用异步流
教程
探索字符串内插 - 交互式
探索字符串内插 - 在环境中
字符串内插的高级方案
控制台应用程序
REST 客户端
使用 LINQ
使用特性
C# 概念
可为空引用类型
可以为 null 的引用迁移
解决可以为 null 的警告
方法
属性
索引器
迭代器
委托和事件
委托简介
System.Delegate 和 delegate 关键字
强类型委托
委托的常见模式
事件简介
标准 .NET 事件模式
已更新的 .NET 事件模式
区别委托和事件
语言集成查询 (LINQ)
LINQ 概述
查询表达式基础
C# 中的 LINQ
在 C# 中编写 LINQ 查询
查询对象的集合
从方法中返回查询
在内存中存储查询结果
对查询结果进行分组
创建嵌套组
对分组操作执行子查询
按连续键对结果进行分组
在运行时动态指定谓词筛选器
执行内部联接
执行分组联接
执行左外部联接
对 join 子句的结果进行排序
使用组合键进行联接
执行自定义联接操作
在查询表达式中处理 null 值
在查询表达式中处理异常
编写安全高效的代码
表达式树
表达式树简介
表达式树说明
支持表达式树的框架类型
执行表达式
解释表达式
生成表达式
翻译表达式
总结
本机互操作性
版本控制
操作指南 C# 文章
文章索引
将字符串拆分为子字符串
连接字符串
搜索字符串
修改字符串内容
比较字符串
如何捕捉非 CLS 异常
.NET Compiler Platform SDK (Roslyn API)
.NET Compiler Platform SDK (Roslyn API) 概述
了解编译器 API 模型
使用语法
使用语义
使用工作区
使用语法可视化工具浏览代码
源生成器
快速入门
语法分析
语义分析
语法转换
教程
生成首个分析器和代码修补程序
C# 编程指南
概述
概述
编程概念
概述
异步编程
概述
异步编程场景
异步编程模型
异步返回类型
取消任务
取消任务列表
在一段时间后取消任务
在异步任务完成时对其进行处理
异步文件访问
属性
概述
创建自定义特性
使用反射访问特性
如何使用特性创建 C/C 联合
集合
协变和逆变
概述
泛型接口中的变体
创建变体泛型接口
在泛型集合的接口中使用变体
委托中的变体
在委托中使用变体
对 Func 和 Action 泛型委托使用变体
表达式树
概述
如何执行表达式树
如何修改表达式树
如何使用表达式树来生成动态查询
在 Visual Studio 中调试表达式树
DebugView 语法
迭代器
语言集成查询 (LINQ)
概述
C# 中的 LINQ 入门
LINQ 查询简介
LINQ 和泛型类型
基本 LINQ 查询操作
使用 LINQ 进行数据转换
LINQ 查询操作中的类型关系
LINQ 中的查询语法和方法语法
支持 LINQ 的 C# 功能
演练:用 C# 编写查询 (LINQ)
标准查询运算符概述
概述
标准查询运算符的查询表达式语法
标准查询运算符按执行方式的分类
对数据进行排序
Set 运算
筛选数据
限定符运算
投影运算
数据分区
联接运算
数据分组
生成运算
相等运算
元素运算
转换数据类型
串联运算
聚合运算
LINQ to Objects
概述
LINQ 和字符串
操作指南
如何对某个词在字符串中出现的次数进行计数 (LINQ)
如何查询包含一组指定词语的句子 (LINQ)
如何查询字符串中的字符 (LINQ)
如何将 LINQ 查询与正则表达式合并在一起
如何查找两个列表之间的差集 (LINQ)
如何按任意词或字段对文本数据进行排序或筛选 (LINQ)
如何重新排列带分隔符的文件的字段 (LINQ)
如何合并和比较字符串集合 (LINQ)
如何从多个源填充对象集合 (LINQ)
如何使用组将一个文件拆分成多个文件 (LINQ)
如何联接不同文件的内容 (LINQ)
如何在 CSV 文本文件中计算列值 (LINQ)
LINQ 和反射
如何使用反射查询程序集的元数据 (LINQ)
LINQ 和文件目录
概述
如何查询具有指定特性或名称的文件
如何按扩展名对文件分组 (LINQ)
如何查询一组文件夹中的总字节数 (LINQ)
如何比较两个文件夹的内容 (LINQ)
如何查询目录树中的一个或多个最大的文件 (LINQ)
如何在目录树中查询重复文件 (LINQ)
如何:查询文件夹中的文件的内容 (LINQ)
如何使用 LINQ 查询 ArrayList
如何为 LINQ 查询添加自定义方法
LINQ to ADO.NET (门户网站页)
启用数据源以进行 LINQ 查询
对 LINQ 的 Visual Studio IDE 和工具支持
反射
序列化 (C#)
概述
如何将对象数据写入 XML 文件
如何从 XML 文件中读取对象数据
演练:在 Visual Basic 中保持对象
语句、表达式和运算符
概述
语句
Expression-Bodied 成员
相等和相等性比较
相等比较
如何为类型定义值相等性
如何测试引用相等性(标识)
类型
强制转换和类型转换
装箱和取消装箱
如何将字节数组转换为 int
如何将字符串转换为数字
如何在十六进制字符串与数值类型之间转换
使用类型 dynamic
演练:创建并使用动态对象( C# 和 Visual Basic )
类、结构和记录
多形性
使用 Override 和 New 关键字进行版本控制
了解何时使用 Override 和 New 关键字
如何重写 ToString 方法
成员
成员概述
抽象类、密封类及类成员
静态类和静态类成员
访问修饰符
字段
常量
如何定义抽象属性
如何在 C# 中定义常量
属性
属性概述
使用属性
接口属性
限制访问器可访问性
如何声明和使用读 / 写属性
自动实现的属性
如何:使用自动实现的属性实现轻量类
方法
方法概述
本地函数
ref 返回值和局部变量
参数
快速参考
传递值类型参数
传递引用类型参数
如何了解向方法传递结构和向方法传递类引用之间的区别
隐式类型的局部变量
如何在查询表达式中使用隐式类型的局部变量和数组
扩展方法
如何实现和调用自定义扩展方法
如何为枚举创建新方法
命名自变量和可选自变量
如何在 Office 编程中使用命名自变量和可选自变量
构造函数
构造函数概述
使用构造函数
实例构造函数
私有构造函数
静态构造函数
如何编写复制构造函数
终结器
对象和集合初始值设定项
如何使用对象初始值设定项初始化对象
如何使用集合初始值设定项初始化字典
嵌套类型
分部类和方法
如何在查询中返回元素属性的子集
接口
显式接口实现
如何显式实现接口成员
如何显式实现两个接口的成员
委托
概述
使用委托
带有命名方法的委托与匿名方法
如何合并委托(多播委托)( C# 编程指南)
如何声明、实例化和使用委托
数组
概述
单维数组
多维数组
交错数组
对数组使用 foreach
将数组作为参数传递
隐式类型的数组
字符串
使用字符串进行编程
如何确定字符串是否表示数值
索引器
概述
使用索引器
接口中的索引器
属性和索引器之间的比较
事件
概述
如何订阅和取消订阅事件
如何发布符合 .NET 准则的事件
如何在派生类中引发基类事件
如何实现接口事件
如何实现自定义事件访问器
泛型
泛型类型参数
类型参数的约束
泛型类
泛型接口
泛型方法
泛型和数组
泛型委托
C 模板和 C# 泛型之间的区别
运行时中的泛型
泛型和反射
泛型和特性
文件系统和注册表
概述
如何循环访问目录树
如何获取有关文件、文件夹和驱动器的信息
如何创建文件或文件夹
如何复制、删除和移动文件和文件夹
如何提供文件操作进度对话框
如何写入文本文件
如何读取文本文件中的内容
如何一次一行地读取文本文件
如何在注册表中创建注册表项
互操作性
.NET 互操作性
互操作性概述
如何使用 C# 功能访问 Office 互操作对象
如何在 COM 互操作编程中使用索引属性
如何使用平台调用播放 WAV 文件
演练: Office 编程( C# 和 Visual Basic )
COM 类示例
语言参考
概述
配置语言版本
类型
值类型
概述
整型数值类型
nint 和 nuint 本机整数类型
浮点型数值类型
内置数值转换
bool
char
枚举类型
结构类型
元组类型
可以为 null 的值类型
引用类型
引用类型的功能
内置引用类型
记录 (record)
class
接口
可为空引用类型
void
var
内置类型
非托管类型
默认值
关键字
概述
修饰符
访问修饰符
快速参考
可访问性级别
可访问性域
可访问性级别的使用限制
内部
private
protected
public
受保护的内部
私有受保护
abstract
async
const
event
extern
in (泛型修饰符)
new (成员修饰符)
out (泛型修饰符)
override
readonly
sealed
static
unsafe
virtual
volatile
语句关键字
语句类别
跳转语句
break
continue
goto
return
异常处理语句
throw
try-catch
try-finally
try-catch-finally
Checked 和 Unchecked
概述
checked
unchecked
fixed 语句
lock 语句
方法参数
快速参考
params
in (参数修饰符)
ref
out (参数修饰符)
命名空间关键字
命名空间
using
using 的上下文
using 指令
using 语句
外部别名
泛型类型约束关键字
new 约束
where
访问关键字
base
this
文字关键字
null
true 和 false
default
上下文关键字
快速参考
add
get
init
partial (类型)
partial (方法)
remove
set
when (筛选条件)
value
yield
查询关键字
快速参考
from 子句
where 子句
select 子句
group 子句
更改为
orderby 子句
join 子句
let 子句
ascending
descending
on
equals
by
in
运算符和表达式
概述
算术运算符
Boolean 逻辑运算符
按位和移位运算符
相等运算符
比较运算符
成员访问运算符和表达式
类型测试运算符和强制转换表达式
用户定义的转换运算符
与指针相关的运算符
赋值运算符
Lambda 表达式
模式
= 运算符
- -= 运算符
?: 运算符
! ( null 包容)运算符
?? 和 ??= 运算符
=> 运算符
:: 运算符
await 运算符
默认值表达式
delegate 运算符
is 运算符
nameof 表达式
new 运算符
sizeof 运算符
stackalloc 表达式
switch 表达式
true 和 false 运算符
with 表达式
运算符重载
语句
迭代语句
选择语句
特殊字符
概述
$ -- 字符串内插
@ -- 逐字字符串标识符
编译器读取的属性
全局属性
调用方信息
可为空的静态分析
杂项
不安全代码和指针
预处理器指令
编译器选项
概述
语言选项
输出选项
输入选项
错误和警告选项
代码生成选项
安全选项
资源选项
杂项选项
高级选项
XML 文档注释
生成 API 文档
建议的标记
示例
编译器消息
规范
C# 6.0 草稿规范
介绍
词法结构
基本概念
类型
变量
转换
表达式
语句
命名空间
类
结构
数组
接口
枚举
委托
异常
特性
不安全代码
文档注释
C# 7.0 - 10.0 功能
C# 7.0 功能
模式匹配
本地函数
Out 变量声明
引发表达式
二进制文本
数字分隔符
异步任务类型
C# 7.1 功能
异步主方法
默认表达式
推导元组名
使用泛型的模式匹配
C# 7.2 功能
只读引用
ref-like 类型的编译时安全性
非尾随命名参数
专用受保护
条件引用
前导数字分隔符
C# 7.3 功能
非托管的泛型类型约束
无论上下文是可移动还是不可移动,索引 `fixed` 字段都不应要求固定
基于模式的 `fixed` 语句
Ref 局部重新分配
Stackalloc 数组初始值设定项
面向自动实现的属性字段的特性
初始化表达式中的表达式变量
元组相等 (==) 和元组不等
(!=)
改进了重载候选项
C# 8.0 功能
可为 null 的引用类型 - 建议
递归模式匹配
默认接口方法
异步流
范围
基于模式的 using 和 using 声明
静态本地函数
Null 合并分配
只读实例成员
嵌套 stackalloc
C# 9.0 功能
记录
顶级语句
可为 null 的引用类型 - 规范
模式匹配增强功能
仅限 Init 的资源库
目标类型的新表达式
模块初始值设定项
扩展分部方法
静态匿名函数
目标类型的条件表达式
协变返回类型
Foreach 循环中的扩展 GetEnumerator
Lambda 弃元参数
本地函数的属性
本机大小的整数
函数指针
禁止发出 localsinit 标志
不受约束的类型参数批注
C# 10.0 功能
记录结构
无参数结构构造函数
全局 using 指令
文件范围的命名空间
扩展属性模式
改进型内插字符串
常数内插字符串
Lambda 改进
Lambda 属性
调用方参数表达式
增强型 #line 指令
泛型属性
改进型明确赋值分析
AsyncMethodBuilder 重写
评论